Mybatis 原理梳理即源码分析

Mybatis 基础

Mybatis 缓存

Mybatis 插件

Mybatis 架构原理

架构

Mybatis 架构由接口层、数据处理层、框架支撑层组成:

接口层提供增删改查以及配置信息维护的接口,提供两种调用方法:1.基于StatementID 2.基于Mapper接口。

数据处理层负责具体的参数映射( ParameterHandler )、SQL 解析( SqlSource )、SQL 执行( Excutor )、结果集映射处理( ResultSetHandler )

框架支撑曾提供最基础的功能支撑,包括连接管理、事务管理、配置加载、缓存管理等组件。

主要构件及层次结构

主要构件

构件 描述
SqlSession 作为 MyBatis ⼯作的主要顶层 API,表示和数据库交互的会话,完成数据库增删改查功能
Executor MyBatis 执⾏器,是 MyBatis 调度的核⼼,负责 SQL 语句的⽣成和 查询缓存 的维护
StatementHandler 封装了JDBC Statement操作,如设置参数、将 Statement 结果集转换成List集合等。
ParameterHandler 参数映射处理,负责将⽤户传递的参数转换成 JDBC Statement 所需要的参数
ResultSetHandler 结果集映射处理,负责将 JDBC 返回的 ResultSet 结果集对象转换成 List 类型的集合
TypeHandler 负责java数据类型和jdbc数据类型之间的映射和转换
MappedStatement MappedStatement维护了⼀条SQL信息封装
SqlSource 负责根据⽤户传递的 parameterObject,动态地⽣成SQL语句,将信息封装到 BoundSql 对象中
BoundSql 表示动态⽣成的SQL语句以及相应的参数信息

层次结构

1
2
3
4
5
6
7
8
9
-> SqlSession                                                   -> SqlSession 

-> Excutor -> Excutor

-> StatememtHandler -> StatememtHandler

-> ParameterHandler -> ResultSetHandler

-> TypeHandler

Mybatis 延迟加载